package org.afs.gescol.core.dao.interfaces;

import java.util.List;

import org.afs.gescol.core.dto.DataCriteria;
import org.afs.gescol.core.model.data.SchoolClass;

/**
 * Interface for school class management.
 * @autor Kobla GBENYO (kobla.gbenyo@gmail.com)
 */
public interface SchoolClassDao {

    /**
     * Creation of SchoolClass.
     * @param schoolClass the SchoolClass model to create
     */
    void createSchoolClass(SchoolClass schoolClass);

    /**
     * Get SchoolClass by id.
     * @param id SchoolClass to get ID
     * @return the getted SchoolClass
     */
    SchoolClass getSchoolClassById(Long id);

    /**
     * Get SchoolClass by label.
     * @param label SchoolClass to get LABEL
     * @return the getted SchoolClass list
     */
    List<SchoolClass> getSchoolClassByLabel(String label);

    /**
     * Get SchoolClass by criteria.
     * @param criteria the criteria
     * @return the getted SchoolClass list
     */
    List<SchoolClass> getSchoolClassByCriteria(DataCriteria criteria);

    /**
     * Delete a SchoolClass.
     * @param schoolClass the SchoolClass to delete
     */
    void deleteSchoolClass(SchoolClass schoolClass);
}
